﻿using System;
using System.Collections.Generic;
using System.Data;
using Utilities.Entities;

namespace BO.News
{
    public interface INewsBO
    {
        DataTable GetNewsByPosition(int top, int typeId, int topExclusion = 0, int zoneId = 0, bool getDataFromMasterDataBase = false);

        DataTable GetListNews(int pageIndex, int pageSize, int topExclusion = 0, int zoneId = 0);

        DataTable GetListNewsWithSubCategory(int pageIndex, int pageSize, int topExclusion = 0, int zoneId = 0);

        int GetTotalPagesOfListNews(int pageSize, int topExclusion = 0, int zoneId = 0);

        DataTable GetNewsDetail(long newsId);

        DataTable GetEmbedNewsOnPage(int top, int zoneId, int type);

        DataTable GetHotNews(int top, int zoneId);

        DataTable GetCareableNews(int top);

        DataTable GetOlderNews(int top, int zoneId, long newsId, DateTime publishedDate);

        CategoryObject GetCategoryDetail(string catUrl);

        CategoryObject GetCategoryDetail(int catId);

        TagObject GetTagDetail(int tagId);

        CategoryObject GetCategoryMetaData(int catId);

        List<CategoryObject> GetAllCategories();

        OriginalSiteObject GetOriginalSiteDetail(int siteId);

        DataTable GetNewsByTag(int tagId, int pageIndex, int pageSize);

        int GetTotalPagesOfListNewsByTag(int tagId, int pageSize);

        DataTable GetNewsByDate(int day, int month, int year, int pageIndex, int pageSize, int zoneId);

        int GetTotalPagesOfListNewsByDate(int day, int month, int year, int pageSize, int zoneId);

        DataTable GetSportNewsByPosition(int top, int typeId, int topExclusion = 0, int zoneId = 0, bool getDataFromMasterDataBase = false);

        DataTable GetMostViewNews(int top, int zoneId);

        List<LiveNewsObject> GetLiveNews(long newsId);

        DataTable GetEmbedNews(int top, int type, int zoneId = 0);

        NewsObject SEO_GetNewsDetail(long newsId);

        DataTable GetNewsByType(int top, int type, int zoneId);

        List<EmbedGroup> GetEmbedGroup();

        EmbedThreadGroup GetEmbedThreads(int top, int zoneId, int type);

        TagObject GetTagDetail(string tagUrl);

        DataTable GetBaiGiaoLuuTrucTuyen(int newsId);

        int GetInterviewId(long newsId);

        List<NewsObject> ImportNewsWhileNotEnough(int zoneId, int topHighlight, int topOther);

    }
}
